package com.yc.demo.d0316;

import com.google.gson.Gson;
import com.yc.demo.util.DBHelper;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@WebServlet(name = "QueryBookServlet", value = "/QueryBookServlet")
public class QueryBookServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
        response.setContentType("application/json;charset=utf-8");

        String bookname = request.getParameter("bookname");
        String bookauthor = request.getParameter("bookauthor");

        String pageSize = request.getParameter("pageSize");
        String currentPage = request.getParameter("currentPage");
        int size = Integer.valueOf(pageSize);
        int page = Integer.valueOf(currentPage);
        int begin = size *(page - 1);

        //说明 :该案例的sql直接写在servlet 中，项目中不允许
        String sql = "select * from bm_book where status=1";

        //组合条件查询
        List<Object> params = new ArrayList<>();
        if (bookname != null && bookname.trim().isEmpty() == false){
            sql += " and bookname like ?";
            params.add("%" + bookname + "%");
        }
        if (bookauthor != null && bookauthor.trim().isEmpty() == false) {
            sql += " and bookauthor like ?";
            params.add("%" + bookauthor + "%");
        }


        //查询总行数
        long total = DBHelper.count(sql,params.toArray());

        params.add(begin);
        params.add(size);

        //查询当前页数据
        List<Map<String,Object>> data = DBHelper.selectListMap(
                sql + " limit ? , ?",params.toArray());

        Map<String,Object> result = new HashMap<>();
        result.put("data", data);
        result.put("total", total);
        String json = new Gson().toJson(result);
        response.getWriter().append(json);

    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}
